CC     = bcc.exe
LINK   = tlink.exe
ARCH   = tlib.exe
INCDIR = $(BC31)\INCLUDE
LIBDIR = $(BC31)\LIB
OBJS   = $(LIBDIR)\c0l.obj
LIBS   = fp87.lib+ mathl.lib+ cl.lib
DEF2   = -D___X86 -D___IO -D___16bit -D___DOS -D___BC31 \
         -D___KeyInt
CFLG2  = -c -ml -3 -f287 -K -w+ -j100 -i64 \
         -G -O -h -Ff -n. -H=dio.sym -I. -I$(INCDIR)
LFLG2  = /Tde /c /x /L$(LIBDIR)

BIN    = ..\bin
DEST   = $(BIN)\$(VAR)

#==========================================================================

LIB_OBJS_1 = sys\dos\_main.obj \
             sys\dos\_std.obj \
             sys\dos\_kbd.obj \
             sys\dos\_disp.obj \
             sys\dos\_graph.obj \
             sys\std.obj
LIB_OBJS_2 = sys\memo.obj \
             sys\kbd.obj \
             sys\disp.obj \
             sys\graph.obj \
             sys\font.obj \
             sys\cons.obj
LIB_OBJS_3 = sys\file.obj \
             sys\tim.obj \
             sys\mice.obj \
             sys\real.obj \
             sys\sig.obj \
             lib\str.obj \
             lib\num.obj
LIB_OBJS   = $(LIB_OBJS_1) $(LIB_OBJS_2) $(LIB_OBJS_3)

DIO_OBJS_1 = main\dio.obj \
             eval\eval.obj \
             eval\cmd.obj \
             eval\arit.obj \
             eval\efpu.obj \
             vp\vp.obj
DIO_OBJS_2 = vp\opfn.obj \
             vp\vfpu.obj \
             vp\sys.obj \
             vp\lib.obj
DIO_OBJS   = $(DIO_OBJS_1) $(DIO_OBJS_2)

#==========================================================================

.c.obj:
        $(CC) @dio_c.cfg -o$@ $<

#==========================================================================

all: $(DEST)\dio.lib $(DEST)\dio.exe $(DEST)\gmod.exe

#==========================================================================

$(BIN)\print.exe: misc\print.c
        $(CC) -c -ml -O -I$(INCDIR) -omisc\print.obj misc\print.c
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+misc\print.obj,$@,,$(LIBS);

dio_c.cfg: $(BIN)\print.exe
        $(BIN)\print.exe $(CFLG2) $(CFLG) >dio_c.cfg
        $(BIN)\print.exe $(DEF2) $(DEF) >>dio_c.cfg

libs.lst: $(BIN)\print.exe
        $(BIN)\print.exe $(LIBS) >libs.lst

dlibs.lst: $(BIN)\print.exe
        $(BIN)\print.exe $(DEST)\dio.lib+ >dlibs.lst
        $(BIN)\print.exe $(LIBS) >>dlibs.lst

lib.lst: $(BIN)\print.exe $(BIN)\lst_lib.exe
        $(BIN)\print.exe $(LIB_OBJS_1) >_lib.lst
        $(BIN)\print.exe $(LIB_OBJS_2) >>_lib.lst
        $(BIN)\print.exe $(LIB_OBJS_3) >>_lib.lst
        $(BIN)\print.exe >>_lib.lst
        $(BIN)\lst_lib.exe _lib.lst lib.lst
        del _lib.lst

dio.lst: $(BIN)\print.exe $(BIN)\lst_lnk.exe
        $(BIN)\print.exe $(OBJS) >_dio.lst
        $(BIN)\print.exe $(DIO_OBJS_1) >>_dio.lst
        $(BIN)\print.exe $(DIO_OBJS_2) >>_dio.lst
        $(BIN)\print.exe >>_dio.lst
        $(BIN)\lst_lnk.exe _dio.lst dio.lst
        del _dio.lst

#==========================================================================

$(DEST)\dio.lib: dio_c.cfg lib.lst $(LIB_OBJS)
        $(ARCH) $@ @lib.lst
        del $(DEST)\dio.bak

$(DEST)\dio.exe: dio_c.cfg dio.lst dlibs.lst $(DIO_OBJS) $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) @dio.lst,$@,,@dlibs.lst;

$(DEST)\gmod.exe: dio_c.cfg dlibs.lst test\gmod.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\gmod.obj,$@,,@dlibs.lst;

$(DEST)\tkey.exe: dio_c.cfg dlibs.lst test\tkey.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\tkey.obj,$@,,@dlibs.lst;

$(DEST)\gkey.exe: dio_c.cfg dlibs.lst test\gkey.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\gkey.obj,$@,,@dlibs.lst;

$(DEST)\mkey.exe: dio_c.cfg dlibs.lst test\mkey.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\mkey.obj,$@,,@dlibs.lst;

$(DEST)\mchr.exe: dio_c.cfg dlibs.lst test\mchr.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\mchr.obj,$@,,@dlibs.lst;

$(DEST)\vdb.exe: dio_c.cfg dlibs.lst test\vdb.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\vdb.obj,$@,,@dlibs.lst;

#==========================================================================

sys\asc0816.h: $(BIN)\b2c.exe $(BIN)\asc0816.fnt
        $(BIN)\b2c.exe $(BIN)\asc0816.fnt $@ N1 Fnt_asc0816[]

$(BIN)\b2c.exe: dio_c.cfg libs.lst misc\b2c.obj
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+misc\b2c.obj,$@,,@libs.lst;

$(BIN)\lst_lib.exe: dio_c.cfg libs.lst misc\lst_lib.obj
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+misc\lst_lib.obj,$@,,@libs.lst

$(BIN)\lst_lnk.exe: dio_c.cfg libs.lst misc\lst_lnk.obj
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+misc\lst_lnk.obj,$@,,@libs.lst;

#==========================================================================
